package com.youhome.service.service.impl;

import com.youhome.common.exception.CustomException;
import com.youhome.service.mapper.ListHubMapper;
import com.youhome.service.mapper.StatMapper;
import com.youhome.service.mapper.StatTypeMapper;
import com.youhome.service.model.Stat;
import com.youhome.service.model.StatType;
import com.youhome.service.response.*;
import com.youhome.service.service.StatService;
import com.youhome.service.service.ZillowService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * Created by chen365 on 2019/04/11.
 */
@Service
public class StatServiceImpl implements StatService {

    @Autowired
    private StatMapper statMapper;
    @Autowired
    private ListHubMapper listHubMapper;
    @Autowired
    private ZillowService zillowService;

    @Override
    public void stat() throws CustomException {

        Stat record = new Stat();

        List<Stat> stats = statMapper.selectByBean(record);

        for (Stat stat : stats) {
            String zip = stat.getZipcode();
            Stat entity = new Stat();
            entity.setId(stat.getId());

            if (stat.getType() == null) {
                //是否有房源
                if (listHubMapper.selectCountByZip(zip) > 0) {
                    entity.setType(1);
                } else {
                    entity.setType(0);
                }

                //1,预估月租,预估月租
                TimeValueItemResult zip_zriPerSqft_allHomes = zillowService.get_Zip_ZriPerSqft_AllHomes(zip);
                System.err.println("1,预估月租,预估月租==>>" + zip_zriPerSqft_allHomes);
                if (zip_zriPerSqft_allHomes != null) {
                    entity.setItem1("1");
                }

                //2,本区域房租中位数走势,本区域房租中位数走势
                List<TimeValueItemResult> timeValueItemResults = zillowService.selectMedianRentByZip(zip, "0");
                System.err.println("2,本区域房租中位数走势,本区域房租中位数走势==>>" + timeValueItemResults);
                if (timeValueItemResults != null) {
                    entity.setItem2("1");
                }

                //3,Zip_Zri_AllHomesPlusMultifamily_Summary,房租概况——租金同比环比增幅——文字说明
                ZriResult zip_zri_allHomes_summary = zillowService.get_Zip_Zri_AllHomes_Summary(78, zip);
                System.err.println("3,Zip_Zri_AllHomesPlusMultifamily_Summary,房租概况——租金同比环比增幅——文字说明==>>" + zip_zri_allHomes_summary);
                if (zip_zri_allHomes_summary != null) {
                    entity.setItem3("1");
                }

                //4,BreakEven_PR,房租概况——租售比——文字说明
                BreakEvenPRResult break_even_pr = zillowService.get_Break_Even_PR(85, zip);
                System.err.println("4,BreakEven_PR,房租概况——租售比——文字说明==>>" + break_even_pr);
                if (break_even_pr != null) {
                    entity.setItem4("1");
                }

                //5,ZriForecast_Public,房租概况——租金涨幅百分比预测——文字说明
                ZriForecastPublicResult zri_forecast_public = zillowService.get_Zri_Forecast_Public(89, zip);
                System.err.println("5,ZriForecast_Public,房租概况——租金涨幅百分比预测——文字说明==>>" + zri_forecast_public);
                if (zri_forecast_public != null) {
                    entity.setItem5("1");
                }

                //6,Zip_Zri_MultiFamilyResidenceRental_Summary,房租概况——多家庭公寓中位租金同比环比增幅——文字说明
                ZriResult zip_zri_allHomes_summary1 = zillowService.get_Zip_Zri_AllHomes_Summary(80, zip);
                System.err.println("6,Zip_Zri_MultiFamilyResidenceRental_Summary,房租概况——多家庭公寓中位租金同比环比增幅——文字说明==>>" + zip_zri_allHomes_summary1);
                if (zip_zri_allHomes_summary1 != null) {
                    entity.setItem6("1");
                }

                //7,Zip_Zri_SingleFamilyResidenceRental_Summary,房租概况——独栋别墅租金同比环比增幅——文字说明
                ZriResult zip_zri_allHomes_summary2 = zillowService.get_Zip_Zri_AllHomes_Summary(82, zip);
                System.err.println("7,Zip_Zri_SingleFamilyResidenceRental_Summary,房租概况——独栋别墅租金同比环比增幅——文字说明==>>" + zip_zri_allHomes_summary2);
                if (zip_zri_allHomes_summary2 != null) {
                    entity.setItem7("1");
                }

//            8,Zip_MedianRentalPrice_1Bedroom,房租概况——所有一卧室房产中位租金——时间轴折线图
                List<TimeValueItemResult> timeSeries = zillowService.getTimeSeries(43, zip, 0);
                System.err.println("8,Zip_MedianRentalPrice_1Bedroom,房租概况——所有一卧室房产中位租金——时间轴折线图==>>" + timeSeries);
                if (timeSeries != null) {
                    entity.setItem8("1");
                }
//            9,Zip_MedianRentalPrice_2Bedroom,房租概况——所有二卧室房产中位租金——时间轴折线图
                List<TimeValueItemResult> timeSeries2 = zillowService.getTimeSeries(44, zip, 0);
                System.err.println("9,Zip_MedianRentalPrice_2Bedroom,房租概况——所有二卧室房产中位租金——时间轴折线图==>>" + timeSeries2);
                if (timeSeries2 != null) {
                    entity.setItem9("1");
                }

                //            10,Zip_MedianRentalPrice_3Bedroom,房租概况——所有三卧室房产中位租金——时间轴折线图

                List<TimeValueItemResult> timeSeries3 = zillowService.getTimeSeries(45, zip, 0);
                System.err.println("10,Zip_MedianRentalPrice_3Bedroom,房租概况——所有三卧室房产中位租金——时间轴折线图==>>" + timeSeries3);
                if (timeSeries3 != null) {
                    entity.setItem10("1");
                }

//            11,Zip_MedianRentalPrice_4Bedroom,房租概况——所有四卧室房产中位租金——时间轴折线图
                List<TimeValueItemResult> timeSeries4 = zillowService.getTimeSeries(46, zip, 0);
                System.err.println("11,Zip_MedianRentalPrice_4Bedroom,房租概况——所有四卧室房产中位租金——时间轴折线图==>>" + timeSeries4);
                if (timeSeries4 != null) {
                    entity.setItem11("1");
                }

//            12,Zip_MedianRentalPrice_5BedroomOrMore,房租概况——所有五卧室及以上房产中位租金——时间轴折线图
                List<TimeValueItemResult> timeSeries5 = zillowService.getTimeSeries(47, zip, 0);
                System.err.println("12,Zip_MedianRentalPrice_5BedroomOrMore,房租概况——所有五卧室及以上房产中位租金——时间轴折线图==>>" + timeSeries5);
                if (timeSeries5 != null) {
                    entity.setItem12("1");
                }

//            13,Zip_MedianRentalPrice_AllHomes,房租概况——所有房产房租中位数——时间轴折线图
                List<TimeValueItemResult> timeSeries_37 = zillowService.getTimeSeries(37, zip, 0);
                System.err.println("13,Zip_MedianRentalPrice_AllHomes,房租概况——所有房产房租中位数——时间轴折线图==>>" + timeSeries_37);
                if (timeSeries_37 != null) {
                    entity.setItem13("1");
                }

//            14,Zip_MedianRentalPrice_CondoCoop,房租概况——所有公寓中位租金——时间轴折线图

                List<TimeValueItemResult> timeSeries_38 = zillowService.getTimeSeries(38, zip, 0);
                System.err.println("14,Zip_MedianRentalPrice_CondoCoop,房租概况——所有公寓中位租金——时间轴折线图==>>" + timeSeries_38);
                if (timeSeries_38 != null) {
                    entity.setItem14("1");
                }

//            15,Zip_MedianRentalPrice_DuplexTriplex,房租概况——所有双拼及三拼公寓联排中位租金——时间轴折线图
                List<TimeValueItemResult> timeSeries_39 = zillowService.getTimeSeries(39, zip, 0);
                System.err.println("15,Zip_MedianRentalPrice_DuplexTriplex,房租概况——所有双拼及三拼公寓联排中位租金——时间轴折线图==>>" + timeSeries_39);
                if (timeSeries_39 != null) {
                    entity.setItem15("1");
                }

//            16,Zip_MedianRentalPrice_Mfr5Plus,房租概况——超过五室公寓的中位租金——时间轴折线图
                List<TimeValueItemResult> timeSeries_40 = zillowService.getTimeSeries(40, zip, 0);
                System.err.println("16,Zip_MedianRentalPrice_Mfr5Plus,房租概况——超过五室公寓的中位租金——时间轴折线图==>>" + timeSeries_40);
                if (timeSeries_40 != null) {
                    entity.setItem16("1");
                }

//            17,Zip_MedianRentalPrice_Sfr,房租概况——所有独栋别墅中位租金——时间轴折线图
                List<TimeValueItemResult> timeSeries_41 = zillowService.getTimeSeries(41, zip, 0);
                System.err.println("17,Zip_MedianRentalPrice_Sfr,房租概况——所有独栋别墅中位租金——时间轴折线图==>>" + timeSeries_41);
                if (timeSeries_41 != null) {
                    entity.setItem17("1");
                }

//            18,Zip_MedianRentalPrice_Studio,房租概况——所有大开间中位租金——时间轴折线图
                List<TimeValueItemResult> timeSeries_42 = zillowService.getTimeSeries(42, zip, 0);
                System.err.println("18,Zip_MedianRentalPrice_Studio,房租概况——所有大开间中位租金——时间轴折线图==>>" + timeSeries_42);
                if (timeSeries_42 != null) {
                    entity.setItem18("1");
                }

//            19,Zip_MedianRentalPricePerSqft_1Bedroom,房租概况——所有一卧室房产每平方英尺中位租金——时间轴折线图
                List<TimeValueItemResult> timeSeries_43 = zillowService.getTimeSeries(43, zip, 0);
                System.err.println("19,Zip_MedianRentalPricePerSqft_1Bedroom,房租概况——所有一卧室房产每平方英尺中位租金——时间轴折线图==>>" + timeSeries_43);
                if (timeSeries_43 != null) {
                    entity.setItem19("1");
                }

//            20,Zip_MedianRentalPricePerSqft_2Bedroom,房租概况——所有二卧室房产每平方英尺中位租金——时间轴折线图
                List<TimeValueItemResult> timeSeries_44 = zillowService.getTimeSeries(44, zip, 0);
                System.err.println("20,Zip_MedianRentalPricePerSqft_2Bedroom,房租概况——所有二卧室房产每平方英尺中位租金——时间轴折线图==>>" + timeSeries_44);
                if (timeSeries_44 != null) {
                    entity.setItem20("1");
                }

//            21,Zip_MedianRentalPricePerSqft_3Bedroom,房租概况——所有三卧室房产每平方英尺中位租金——时间轴折线图
                List<TimeValueItemResult> timeSeries_45 = zillowService.getTimeSeries(45, zip, 0);
                System.err.println("21,Zip_MedianRentalPricePerSqft_3Bedroom,房租概况——所有三卧室房产每平方英尺中位租金——时间轴折线图==>>" + timeSeries_45);
                if (timeSeries_45 != null) {
                    entity.setItem21("1");
                }

//            22,Zip_MedianRentalPricePerSqft_4Bedroom,房租概况——所有四卧室房产每平方英尺中位租金——时间轴折线图
                List<TimeValueItemResult> timeSeries_46 = zillowService.getTimeSeries(46, zip, 0);
                System.err.println("22,Zip_MedianRentalPricePerSqft_4Bedroom,房租概况——所有四卧室房产每平方英尺中位租金——时间轴折线图==>>" + timeSeries_46);
                if (timeSeries_46 != null) {
                    entity.setItem22("1");
                }

//            23,Zip_MedianRentalPricePerSqft_5BedroomOrMore,房租概况——所有五卧室及以上房产每平方英尺中位租金——时间轴折线图
                List<TimeValueItemResult> timeSeries_47 = zillowService.getTimeSeries(47, zip, 0);
                System.err.println("23,Zip_MedianRentalPricePerSqft_5BedroomOrMore,房租概况——所有五卧室及以上房产每平方英尺中位租金——时间轴折线图==>>" + timeSeries_47);
                if (timeSeries_47 != null) {
                    entity.setItem23("1");
                }

//            24,Zip_MedianRentalPricePerSqft_AllHomes,房租概况——所有房产每平方英尺中位租金——时间轴折线图
                List<TimeValueItemResult> timeSeries_48 = zillowService.getTimeSeries(48, zip, 0);
                System.err.println("24,Zip_MedianRentalPricePerSqft_AllHomes,房租概况——所有房产每平方英尺中位租金——时间轴折线图==>>" + timeSeries_48);
                if (timeSeries_48 != null) {
                    entity.setItem24("1");
                }

//            25,Zip_MedianRentalPricePerSqft_CondoCoop,房租概况——所有公寓房产每平方英尺中位租金——时间轴折线图
                List<TimeValueItemResult> timeSeries_49 = zillowService.getTimeSeries(49, zip, 0);
                System.err.println("25,Zip_MedianRentalPricePerSqft_CondoCoop,房租概况——所有公寓房产每平方英尺中位租金——时间轴折线图==>>" + timeSeries_49);
                if (timeSeries_49 != null) {
                    entity.setItem25("1");
                }

//            26,Zip_MedianRentalPricePerSqft_DuplexTriplex,房租概况——所有双拼及三拼房产每平方英尺中位租金——时间轴折线图
                List<TimeValueItemResult> timeSeries_50 = zillowService.getTimeSeries(50, zip, 0);
                System.err.println("26,Zip_MedianRentalPricePerSqft_DuplexTriplex,房租概况——所有双拼及三拼房产每平方英尺中位租金——时间轴折线图==>>" + timeSeries_50);
                if (timeSeries_50 != null) {
                    entity.setItem26("1");
                }

//            27,Zip_MedianRentalPricePerSqft_Mfr5Plus,房租概况——所有五室以上公寓房产每平方英尺中位租金——时间轴折线图
                List<TimeValueItemResult> timeSeries_51 = zillowService.getTimeSeries(51, zip, 0);
                System.err.println("27,Zip_MedianRentalPricePerSqft_Mfr5Plus,房租概况——所有五室以上公寓房产每平方英尺中位租金——时间轴折线图==>>" + timeSeries_51);
                if (timeSeries_51 != null) {
                    entity.setItem27("1");
                }

//            28,Zip_MedianRentalPricePerSqft_Sfr,房租概况——所有独栋别墅房产每平方英尺中位租金——时间轴折线图
                List<TimeValueItemResult> timeSeries_52 = zillowService.getTimeSeries(52, zip, 0);
                System.err.println("28,Zip_MedianRentalPricePerSqft_Sfr,房租概况——所有独栋别墅房产每平方英尺中位租金——时间轴折线图==>>" + timeSeries_52);
                if (timeSeries_52 != null) {
                    entity.setItem28("1");
                }


//            29,Zip_MedianRentalPricePerSqft_Studio,房租概况——所有大开间房产每平方英尺中位租金——时间轴折线图
                List<TimeValueItemResult> timeSeries_53 = zillowService.getTimeSeries(53, zip, 0);
                System.err.println("29,Zip_MedianRentalPricePerSqft_Studio,房租概况——所有大开间房产每平方英尺中位租金——时间轴折线图==>>" + timeSeries_53);
                if (timeSeries_53 != null) {
                    entity.setItem29("1");
                }

//            30,Zip_Zri_MultiFamilyResidenceRental,房租概况——多家庭公寓中位租金——时间轴折线图
                List<TimeValueItemResult> timeSeries_81 = zillowService.getTimeSeries(81, zip, 0);
                System.err.println("30,Zip_Zri_MultiFamilyResidenceRental,房租概况——多家庭公寓中位租金——时间轴折线图==>>" + timeSeries_81);
                if (timeSeries_81 != null) {
                    entity.setItem30("1");
                }

//            31,Zip_Zri_SingleFamilyResidenceRental,房租概况——独栋别墅中位租金——时间轴折线图
                List<TimeValueItemResult> timeSeries_83 = zillowService.getTimeSeries(83, zip, 0);
                System.err.println("31,Zip_Zri_SingleFamilyResidenceRental,房租概况——独栋别墅中位租金——时间轴折线图==>>" + timeSeries_83);
                if (timeSeries_83 != null) {
                    entity.setItem31("1");
                }

//            32,Zip_Zri_AllHomesPlusMultifamily,房租概况——所有房产中位租金——时间轴折线图
                List<TimeValueItemResult> timeSeries_79 = zillowService.getTimeSeries(79, zip, 0);
                System.err.println("32,Zip_Zri_AllHomesPlusMultifamily,房租概况——所有房产中位租金——时间轴折线图==>>" + timeSeries_79);
                if (timeSeries_79 != null) {
                    entity.setItem32("1");
                }

//            33,Zip_ZriPerSqft_AllHomes,房租概况——所有房产每平方英尺平均租金——时间轴折线图
                List<TimeValueItemResult> timeSeries_84 = zillowService.getTimeSeries(84, zip, 0);
                System.err.println("33,Zip_ZriPerSqft_AllHomes,房租概况——所有房产每平方英尺平均租金——时间轴折线图==>>" + timeSeries_84);
                if (timeSeries_84 != null) {
                    entity.setItem33("1");
                }

//            34,Affordability_Wide_2018Q2_Public_Rent,房租概况——租金占家庭收入的比重——大数据量面积折线图
                List<TimeValueItemResult> timeSeries_88 = zillowService.getTimeSeries(88, zip, 0);
                System.err.println(" 34,Affordability_Wide_2018Q2_Public_Rent,房租概况——租金占家庭收入的比重——大数据量面积折线图==>>" + timeSeries_88);
                if (timeSeries_88 != null) {
                    entity.setItem34("1");
                }

//            35,Zip_PriceToRentRatio_AllHomes,房租概况——所有房产售租比——时间轴折线图
                List<TimeValueItemResult> timeSeries_60 = zillowService.getTimeSeries(60, zip, 0);
                System.err.println("35,Zip_PriceToRentRatio_AllHomes,房租概况——所有房产售租比——时间轴折线图==>>" + timeSeries_60);
                if (timeSeries_60 != null) {
                    entity.setItem35("1");
                }

//            36,本区域预估租金回报,本区域预估租金回报
                List<TimeSeriesItem> timeSeriesItems = zillowService.selectRentalYieldByZip(zip, "0");
                System.err.println("36,本区域预估租金回报,本区域预估租金回报==>>" + timeSeriesItems);
                if (timeSeriesItems != null) {
                    entity.setItem36("1");
                }

                statMapper.updateByPrimaryKeySelective(entity);

            }else{
                System.err.println("==已经查询==");
            }
        }
    }
}
